﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace SocketLib
{
	/// <summary>
	/// 包解析
	/// </summary>
	public class AnalyzerPack
	{

		//public IPMPack UnPack(byte[] b1)
		//{
		//    return new IPMPack();


		//    int LenghHeader = 0; //定义收到包的长度

		//    bool needReadLengthHeader = true; //是否需要读取长度的头


		//    byte[] tempBuffer = null;

		//        tempBuffer = MergeBytes(tempBuffer, b1);


		//        if (needReadLengthHeader)
		//        {
		//            LenghHeader = BitConverter.ToInt32(tempBuffer, 0);
		//            needReadLengthHeader = false;

		//        }



		//        //接收多了把多的放到缓存区
		//        if (tempBuffer.Length >= LenghHeader)
		//        {

		//            needReadLengthHeader = true;


		//            Byte[] a = new Byte[tempBuffer.Length - LenghHeader];
		//            Buffer.BlockCopy(tempBuffer, LenghHeader, a, 0, tempBuffer.Length - LenghHeader);

		//            ////把完整的包发过去处理
		//            //if (CallbackEventHandler != null)
		//            //{
		//            //    CallbackEventArgs args = new CallbackEventArgs();
		//            //    byte[] ss = new byte[LenghHeader];
		//            //    Buffer.BlockCopy(tempBuffer, 0, ss, 0, LenghHeader);
		//            //    args.buffer = ss;
		//            //    CallbackEventHandler(this, args);
		//            //}
		//            tempBuffer = a;
		//            ///TODO:如果这个是最后一个包 没发啊 
		//            if (bufferPool.Count == 0 && tempBuffer.Length > 0)
		//            {
		//                if (CallbackEventHandler != null)
		//                {
		//                    CallbackEventArgs args = new CallbackEventArgs();
		//                    args.buffer = tempBuffer;
		//                    CallbackEventHandler(this, args);
		//                }
		//                tempBuffer = null;
		//            }



		//        }






		//}



		private byte[] MergeBytes(byte[] pByteA, byte[] pByteB)
		{
			if (pByteA == null || pByteA.Length == 0)
			{
				return pByteB;
			}
			else
			{

				MemoryStream ms = new MemoryStream();
				ms.Write(pByteA, 0, pByteA.Length);
				ms.Write(pByteB, 0, pByteB.Length);


				//return ms.GetBuffer();
				return ms.ToArray();
			}
		}


	}
}
	
